package com.honour.service.interfaced.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.honour.service.interfaced.OrderManager;
import com.system.dao.DaoSupport;
import com.system.util.PageData;

@Service("orderService")
public class OrderService implements OrderManager {
	
	@Resource(name = "daoSupport")
	private DaoSupport dao;
	
	
	/**
	 * 保存地址
	 * @Author zhanglingbing
	 * @date 2018年1月30日
	 * @param pd
	 * @throws Exception
	 *
	 */
	@Override
	public void saveAdderss(PageData pd) throws Exception {
		dao.save("OrderMapper.addAdderss", pd);
	}
	
	/**
	 * 修改默认状态
	 * @Author zhanglingbing
	 * @date 2018年1月30日
	 * @param pd
	 * @throws Exception
	 *
	 */
	@Override
	public void updateStatus(PageData pd) throws Exception {
		dao.update("OrderMapper.editUserAdrStatus", pd);
	}

	/**
	 * 提交订单
	 * @author zhanglingbing
	 * @date 2018年2月1日
	 * @param pd
	 * @throws Exception
	 */
	@Override
	public void save(PageData pd) throws Exception {
		dao.save("OrderMapper.addOrder", pd);
	}

	/**
	 * 通过用户id和默认状态查询地址
	 * @Author zhanglingbing
	 * @date 2018年1月31日
	 * @param pd
	 * @return
	 * @throws Exception
	 *
	 */
	@Override
	public PageData selectAdrByUserIdAndStatus(PageData pd) throws Exception {
		return (PageData)dao.findForObject("OrderMapper.selectAdrByUserIdAndStatus", pd);
	}

	
	/**
	 * 修改地址
	 * @Author zhanglingbing
	 * @date 2018年1月31日
	 * @param pd
	 * @throws Exception
	 *
	 */
	@Override
	public void updateAdr(PageData pd) throws Exception {
		dao.update("OrderMapper.updateAdr", pd);
	}
	

	/**
	 * 根据地址id查询单个地址信息
	 * @author zhanglingbing
	 * @date 2018年2月27日
	 * @param pd
	 * @throws Exception
	 */
	@Override
	public PageData getAdrInfo(PageData pd) throws Exception {
		return (PageData)dao.findForObject("OrderMapper.getAdrInfo", pd);
	}

	/**
	 * 查询收货地址列表
	 * @author zhanglingbing
	 * @date 2018年2月1日
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> selectAdrList(PageData pd) throws Exception {
		return (List<PageData>) dao.findForList("OrderMapper.selectAllAdr", pd);
	}

	/**
	 * 通过订单id查询订单中子订单信息
	 * @author zhanglingbing
	 * @date 2018年2月1日
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> selectOrderitemInfoByOrderId(PageData pd) throws Exception {
		return (List<PageData>) dao.findForList("OrderMapper.selectOrderitemInfoByOrderId", pd);
	}

	/**
	 * 通过地址id查询地址信息
	 * @author zhanglingbing
	 * @date 2018年2月1日
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@Override
	public PageData selectAdrInfoByAdrId(PageData pd) throws Exception {
		return (PageData) dao.findForObject("OrderMapper.selectAdrInfoByAdrId", pd);
	}

	/**
	  * 查询用户所有的订单
	  * @author zhanglingbing
	  * @date 2018年2月2日
	  * @param pd
	  * @return
	  * @throws Exception
	  */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> getAllOrderList(PageData pd) throws Exception {
		return (List<PageData>) dao.findForList("OrderMapper.listAll", pd);
	}

	/**
	 * 修改订单状态
	 * @author zhanglingbing
	 * @date 2018年2月2日
	 * @param pd
	 * @throws Exception
	 */
	@Override
	public void updateOrderStatus(PageData pd) throws Exception {
		dao.update("OrderMapper.updateOrderStatus", pd);
	}
	
	

	/**
	 * 删除订单
	 * @author zhanglingbing
	 * @date 2018年2月2日
	 * @param pd
	 * @throws Exception
	 */
	/*@Override
	public void delorder(PageData pd) throws Exception {
		dao.delete("OrderMapper.delorder", pd);
	}*/
	
	/**
	 * 【一键支付】修改订单支付状态，付款时间（订单表）
	 * @author zhanglingbing
	 * @date 2018年2月23日
	 * @param pd
	 * @throws Exception
	 */
	@Override
	public void updateOrder(PageData pd) throws Exception {
		dao.update("OrderMapper.updateOrder", pd);
	}

	/**
	 * 根据商家id查询订单列表 
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> getOrderListById(PageData pd) throws Exception {
		return (List<PageData>) dao.findForList("OrderMapper.getOrderListById", pd);
	}
	/**
	 * 删除子订单
	 * @author zhanglingbing
	 * @date 2018年2月2日
	 * @param pd
	 * @throws Exception
	 */
	@Override
	public void delorderitem(PageData pd) throws Exception {
		dao.delete("OrderMapper.delorderitem", pd);
	}

	/**
	 * 根据用户id与地址id删除地址
	 * @author zhanglingbing
	 * @date 2018年2月5日
	 * @param pd
	 * @throws Exception
	 */
	@Override
	public void delAddress(PageData pd) throws Exception {
		dao.delete("OrderMapper.delAddress", pd);
	}

	/**
	 * 生成子订单
	 * @author zhanglingbing
	 * @date 2018年2月5日
	 * @param pd
	 * @throws Exception
	 */
	@Override
	public void addOrderitem(PageData pd) throws Exception {
		dao.save("OrderMapper.addOrderitem", pd);
	}

	/**
	 * 通过订单id查询订单状态信息
	 * @author zhanglingbing
	 * @date 2018年2月1日
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@Override
	public PageData selectOrderInfoByOrderId(PageData pd) throws Exception {
		return (PageData) dao.findForObject("OrderMapper.selectOrderInfoByOrderId", pd);
	}

	/**
	 * 根据商家id以及订单状态获取订单金额
	 * @author zhanglingbing
	 * @date 2018年2月23日
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@Override
	public PageData getOrderMoneyById(PageData pd) throws Exception {
		return (PageData) dao.findForObject("OrderMapper.getOrderMoneyById", pd);
	}

	/**
	 * 根据商家id以及订单状态获取订单数量
	 * @author zhanglingbing
	 * @date 2018年2月23日
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	@Override
	public PageData getOrderNumberById(PageData pd) throws Exception {
		return (PageData) dao.findForObject("OrderMapper.getOrderNumberById", pd);
	}
	
	/*
	 * 后台获取订单的详细信息
	 */
	@Override
	public PageData getOrderDetInfo(PageData pd) throws Exception {
		return (PageData)dao.findForObject("OrderMapper.getOrderDetInfo", pd);
	}

	/**
	 * 后台根据订单号获取订单项
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> getOrderItemById(PageData pd) throws Exception {
		return (List<PageData>)dao.findForList("OrderMapper.getOrderItemById", pd);
	}

	/**
	 * 后台获取物流管理订单信息
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> getLogisticsOrders(PageData pd) throws Exception {
		return (List<PageData>)dao.findForList("OrderMapper.getLogisticsOrders", pd);
	}

	/**
	 * 根据订单号获取订单信息
	 */
	@Override
	public PageData getByUserIdAndOrderNo(PageData pd) throws Exception {
		return (PageData) dao.findForObject("OrderMapper.getByUserIdAndOrderNo", pd);
	}

	/**
	 * 根据订单号获取规格库存
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<PageData> getStockByNum(PageData pd) throws Exception {
		return (List<PageData>)dao.findForList("OrderMapper.getStockByNum", pd);
	}

	/**
	 * 根据用户id以及订单id查询子订单
	 * @author zhanglingbing
	 * @date 2018年3月1日
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	/*@SuppressWarnings("unchecked")
	@Override
	public List<PageData> getOrderItemInfoById(PageData pd) throws Exception {
		return (List<PageData>)dao.findForList("OrderMapper.getOrderItemInfoById", pd);
	}*/

	



}
